/**
 * CopyRight zh
 * 2020/03/31
 * positionLocation.js
 * version : 1.0.0
 */
import Axios from 'axios'

/**
 * @param address 详细地址  省-市-区
 * @param callback 回调函数 返回resData
 * @return resData: {
 *    status: true, // 是否成功
      data: null, // 返回数据
      message: null, // 返回提示信息
 *  }
 * */
export function getLngLat(address, callback) {
  const resData = {
    status: true,
    data: null,
    message: null
  }
  // 根据地址获取经纬度
  Axios.get('/amap/geocode/geo?key=da68a299752634133aa3ba12026c08e5&&address=' + address).then(res => {
    console.log(res, 'res')
    if (res.status === 200 && res.data.info === 'OK') {
      let resp = res.data.geocodes[0]
      if (resp) {
        resData.data = resp.location.split(',')
        resData.message = '获取经纬度成功'
        callback(resData)
      } else {
        console.error('不存在该位置信息')
        resData.status = false
        resData.message = '不存在该位置信息'
        callback(resData)
      }
    } else {
      console.error('获取经纬度信息失败')
      resData.status = false
      resData.message = '获取经纬度信息失败'
      callback(resData)
    }
  })
}

/**
 * @param longitude  经度 英文：longitude  114.044815
 * @param latitude 纬度 英文：latitude   22.687373
 * @param callback 回调函数 返回resData
 * @return resData: {
 *    status: true, // 是否成功
      data: null, // 返回数据
      message: null, // 返回提示信息
 *  }
 * */
export function getLocation(longitude, latitude, callback) {
  // const that = this
  const location = longitude + ',' + latitude
  const resData = {
    status: true,
    data: null,
    message: null
  }
  const nowLocation = {
    lat: '', // 纬度
    lon: '', // 经度
    province: '', // 省
    city: '', // 市
    district: '', // 区 县
    street: '', // 街道、乡镇
    nowPlace: '', // 省-市-区
    addressDetail: '' // 详细地址
  }
  // 根据经纬度获取地址
  Axios.get('/amap/geocode/regeo?key=da68a299752634133aa3ba12026c08e5&location=' + location).then(res => {
    if (res.status === 200 && res.data.info === 'OK') {
      let resp = res.data.regeocode.addressComponent
      const addressDetails = res.data.regeocode.formatted_address
      if (resp) {
        nowLocation.province = resp.province
        if (resp.province === '上海市' || resp.province === '重庆市' || resp.province === '天津市' || resp.province === '北京市' || resp.province === '香港特别行政区' || resp.province === '澳门特别行政区') {
          if (resp.province === '香港特别行政区' || resp.province === '澳门特别行政区') {
            nowLocation.city = resp.province.replace('特别行政区', '')
          } else {
            nowLocation.city = resp.province
          }
        } else {
          nowLocation.city = resp.city
        }
        // 如果例如： 东莞市-虎门镇 返回信息 district 值为 [], 则 东莞市 区级值  用 township街道值 进行回填
        // console.log('resp.district instanceof Array', resp.district instanceof Array)
        if (resp.district instanceof Array && resp.district.length === 0) {
          nowLocation.district = resp.township
        } else {
          nowLocation.district = resp.district
        }
        nowLocation.street = resp.township
        nowLocation.nowPlace = nowLocation.province + nowLocation.city + nowLocation.district
        nowLocation.lon = longitude
        nowLocation.lat = latitude
        nowLocation.addressDetail = resp.neighborhood.name
        if (resp.district !== false) {
          nowLocation.addressDetail = addressDetails.split(resp.district)[1]
        } else if (resp.city !== false) {
          nowLocation.addressDetail = addressDetails.split(resp.city)[1]
        }
        resData.data = nowLocation
        resData.message = '获取位置信息成功'
        callback(resData)
      } else {
        console.error('不存在该位置信息')
        resData.status = false
        resData.message = '不存在该位置信息'
        callback(resData)
      }
    } else {
      console.error('获取地址信息失败')
      resData.status = false
      resData.message = '获取地址信息失败'
      callback(resData)
    }
  })
}

export function seachList(keyword, adcode, callback) {
  Axios.get(`/amap/place/text?key=da68a299752634133aa3ba12026c08e5&keywords=${keyword}&types=&city=${adcode}&children=1&offset=20&page=1&extensions=all`).then(res => {
    if (res.status === 200 && res.data.info === 'OK') {
      const resData = {
        status: true,
        data: null,
        message: null
      }
      resData.data = res.data.pois
      resData.message = '获取位置信息成功'
      callback(resData)
    }
  })
}
